PM_FUNC_NORM_ATTRIB SKILL:SkillBoneClub( SKILL_CALL:iCall, Int:id )
{
	#pragma unused id
	switch( iCall )
	{
		case CALL_REGISTER: return SkillRegister( .Name = "Bone Club", .Type = TYPE_GROUND, .callTypes = CALL_BIND_DOWN, .PP = 20, .Charges = 1, .DelayTime = 1.0 );
		case CALL_HELP:     return SkillHelp( "Damages." );
		case CALL_BIND_DOWN:
		{
			return SKILL_USED;
		}
	}
	return SKILL_READY;
}

PM_FUNC_NORM_ATTRIB SKILL:SkillBonemerang( SKILL_CALL:iCall, Int:id )
{
	#pragma unused id
	switch( iCall )
	{
		case CALL_REGISTER: return SkillRegister( .Name = "Bonemerang", .Type = TYPE_GROUND, .callTypes = CALL_BIND_DOWN, .PP = 10, .Charges = 1, .DelayTime = 1.0 );
		case CALL_HELP:     return SkillHelp( "Pokemon attacks 2 times." );
		case CALL_BIND_DOWN:
		{
			return SKILL_USED;
		}
	}
	return SKILL_READY;
}

PM_FUNC_NORM_ATTRIB SKILL:SkillDig( SKILL_CALL:iCall, Int:id )
{
	switch( iCall )
	{
		case CALL_REGISTER: return SkillRegister( .Name = "Dig", .Type = TYPE_GROUND, .callTypes = CALL_BIND_DOWN, .PP = 10, .Charges = 10, .DelayTime = 5.0 );
		case CALL_HELP:     return SkillHelp( "Allows you to dig through walls" );
		case CALL_BIND_DOWN:
		{
			new Vector:vStartOrigin[3], Coord:cAim[3]
			new Vector:vVelocity[3];
			new Int:iDigLength = StatClamp( id, STAT_SPECIAL, 50, 150 );

			EntityGetOrigin( id, vStartOrigin );
			PlayerAimOrigin( id, cAim );
			CoordToVector( cAim, vVelocity );

			if ( get_distance_f( vStartOrigin, vVelocity ) > iDigLength )
			{
				if ( !fm_trace_hull( vStartOrigin, PlayerHullSize( id ), id ) )
				{
					return SKILL_DENY;
				}
			}

			velocity_by_aim( id, iDigLength, vVelocity );
			vStartOrigin[0] += vVelocity[0];
			vStartOrigin[1] += vVelocity[1];
			vStartOrigin[2] += vVelocity[2];
			EntitySetOrigin( id, vStartOrigin );

			UnStuck( id );
			SoundHit( id );

			return SKILL_USED_PAUSE;
		}
	}
	return SKILL_READY;
}

PM_FUNC_NORM_ATTRIB SKILL:SkillEarthquake( SKILL_CALL:iCall, Int:id )
{
	#pragma unused id
	switch( iCall )
	{
		case CALL_REGISTER: return SkillRegister( .Name = "Earthquake", .Type = TYPE_GROUND, .callTypes = CALL_BIND_DOWN, .PP = 10, .Charges = 1, .DelayTime = 1.0 );
		case CALL_HELP:     return SkillHelp( "Damages. (Doesn't affect Flying-type Pokemon)" );
		case CALL_BIND_DOWN:
		{
			return SKILL_USED;
		}
	}
	return SKILL_READY;
}

PM_FUNC_NORM_ATTRIB SKILL:SkillFissure( SKILL_CALL:iCall, Int:id )
{
	#pragma unused id
	switch( iCall )
	{
		case CALL_REGISTER: return SkillRegister( .Name = "Fissure", .Type = TYPE_GROUND, .callTypes = CALL_BIND_DOWN, .PP = 5, .Charges = 1, .DelayTime = 1.0 );
		case CALL_HELP:     return SkillHelp( "May defeat enemy Pokemon in one hit. (Doesn't affect Flying-type Pokemon)" );
		case CALL_BIND_DOWN:
		{
			return SKILL_USED;
		}
	}
	return SKILL_READY;
}

